# Update a comment

Updates an existing comment's content. Only the comment author can update their own comments. The comment must belong to the specified post. Maintains the comment's position in the thread hierarchy.

Endpoint: PUT /api/v1/posts/{postId}/comments/{commentId}
Version: 1.0
Security: header

## Path parameters:

  - `commentId` (string, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `postId` (string, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

## Query parameters:

  - `htmlContent` (any)
    Returns text as html if true or original text if false. Applicable only to local posts and users. Default is true.

## Request fields (application/json):

  - `text` (string, required)
    Post text
    Example: "Hello World"

  - `privacy` (string, required)
    Post privacy
    Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST", "HIDDEN"

  - `kind` (string, required)
    Note or Article
    Enum: "Note", "Article"

  - `attachments` (array,null)
    List with upload ids of attachments
    Example: ["us_01hxcvk1hjexere4pvtrj0ymqq"]

  - `poll` (object,null)
    Poll parameters

  - `poll.options` (array, required)
    List of poll options

  - `poll.expiresIn` (number, required)
    Duration in seconds
    Example: "3600"

  - `poll.multiple` (boolean, required)
    Allow multiple choices

  - `poll.hideTotals` (boolean, required)
    Hide totals until poll finishes

  - `commentsEnabled` (boolean)
    Enable/disable comments for the post

  - `sensitive` (boolean)
    Mark status and attached media as sensitive. contentWarning should be provided when this flag is true. Defaults to false.

  - `contentWarning` (string,null)
    Content warning. The post content and media will be hidden under the warning.

  - `ownerId` (string,null)
    Null if regular post. event_id for events
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `title` (string,null)
    Title of a post

  - `tags` (array,null)
    List of tags. The other way to add tags is using '#' hashtags in text

  - `withPreview` (boolean)
    Create Preview Card for for link in the post

  - `mediaType` (string,null)
    Post media type. Default for Note is text/plain, for Article text/markdown
    Enum: "TEXT_PLAIN", "MARKDOWN"

  - `imageUploadId` (string,null)
    Upload ID for the article image (will also be included in attachments)
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `postAsOwner` (boolean)
    When true, the post is attributed to the group channel specified by ownerId. Only available to channel moderators/admins. Supported for top-level posts and comments.

  - `quoteApprovalPolicy` (string,null)
    Quote approval policy for this post. Omit to use account default. Values: PUBLIC, FOLLOWERS, NOBODY
    Enum: "PUBLIC", "FOLLOWERS", "NOBODY"

  - `address` (object,null)
    Location address for the post

  - `address.formatted` (string, required)
    Formatted address
    Example: "Adriaen Van Ostadestraat 53, 4703 NT Roosendaal, Netherlands"

  - `address.name` (string,null)
    Name
    Example: "Casa Vacanze"

  - `address.country` (string,null)
    Country
    Example: "USA"

  - `address.countryCode` (string,null)
    Country two letter name
    Example: "us"

  - `address.region` (string,null)
    Region
    Example: "Massachusetts"

  - `address.regionCode` (string,null)
    Region Code
    Example: "MA"

  - `address.subRegion` (string,null)
    Sub-region
    Example: "Newton Heights"

  - `address.locality` (string,null)
    Locality
    Example: "Madrid"

  - `address.street` (string,null)
    Street
    Example: "Adriaen Van Ostadestraat"

  - `address.postalCode` (string,null)
    Address postal code
    Example: "4703 NT"

  - `address.houseNumber` (string,null)
    House number
    Example: "23"

  - `address.longitude` (number,null)
    Longitude
    Example: 4.437564

  - `address.latitude` (number,null)
    Latitude
    Example: 51.534581

  - `address.timeZone` (string,null)
    Time zone name
    Example: "Europe/Amsterdam"

  - `address.plusCode` (string,null)
    Short code
    Example: "9F36GCMQ+R2"

  - `address.serviceId` (string,null)
    Service ID
    Example: "geoapify"

  - `address.placeId` (string,null)
    Service place id

  - `removeAddress` (boolean)
    Remove existing address from the post

## Response 200 fields (application/json):

  - `id` (string, required)
    internal post id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `uri` (string, required)
    unique post uri

  - `text` (string, required)
    post text, raw or html depending on how it was requested

  - `path` (array, required)
    replies path
    Example: ["us_01hxcvk1hjexere4pvtrj0ymqq"]

  - `privacy` (string, required)
    post privacy level
    Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST", "HIDDEN"

  - `effectivePrivacy` (string, required)
    Resolved privacy that never contains FOLLOW_POST. For FOLLOW_POST posts, this is the root post's privacy. For all other posts, this equals privacy.
    Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST", "HIDDEN"

  - `kind` (string, required)
    Article or Note
    Enum: "Note", "Article"

  - `software` (string, required)
    post software
    Example: "wellesley"

  - `repostOf` (string,null)
    id of a post this one was reposted from
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `ownerId` (string, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `ownerType` (string, required)
    Owner types for posts and drafts:
      * USER - user's channel (personal or group channel)
      * EVENT - event (personal or group)

       POST OWNER: 
      - Personal channel
          - userId = author
          - ownerId = userId (Type.USER)
          - ownerType = USER
          - groupId = null
      - Personal event
          - userId = author
          - ownerId = eventId (Type.EVENT)
          - ownerType = EVENT
          - groupId = null
      - Group channel
          - userId = author
          - ownerId = channel userId (Type.GROUP_CHANNEL, gc_ prefix)
          - ownerType = USER
          - groupId = groupId
      - Group event
          - userId = author
          - ownerId = eventId (Type.EVENT)
          - ownerType = EVENT
          - groupId = groupId
    Enum: "USER", "EVENT"

  - `groupId` (string,null, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `title` (string,null, required)

  - `summary` (string,null)
    Subject or summary line, below which post content is collapsed until expanded.

  - `tags` (array, required)
    List of tags

  - `mentions` (array, required)
    List of mentions

  - `stats` (object, required)
    Stats

  - `stats.likes` (integer)

  - `stats.reposts` (integer)

  - `stats.quotes` (integer)

  - `stats.comments` (integer)

  - `stats.views` (integer)

  - `stats.bookmarks` (integer)

  - `stats.reactions` (object)

  - `stats.watchTime` (integer,null)

  - `stats.secondsToFirstAnswer` (integer,null)

  - `stats.secondsToAccepted` (integer,null)

  - `stats.lastActivity` (string)
    Example: "2022-03-10T16:15:50Z"

  - `stats.lastViewTimestamp` (string)
    Example: "2022-03-10T16:15:50Z"

  - `settings` (object, required)
    Settings

  - `settings.commentsEnabled` (boolean)

  - `settings.sensitive` (boolean)

  - `settings.hiddenFrom` (string,null)
    Privacy levels for posts:
      * PUBLIC - post is visible to anyone, including people who are not logged in and those who do not follow the user.
                 It appears in the public timelines (home, local, and federated).
      * UNLISTED - post is visible to anyone who visits the user's profile, but it does not appear in public timelines.
                 Only followers and those who visit the user's profile directly can see it.
      * PRIVATE - post is only visible to the user's followers. It does not appear in public timelines or on the user's profile for non-followers.
      * DIRECT - post is visible only to the mentioned users. It functions like a direct message and is not visible on public timelines, the user's profile, or to followers.
      * FOLLOW_POST - comment only. Follow parent post visibility
      * HIDDEN - post is visible only to the author. It is never federated on create/delete. Transitioning to a visible privacy sends
      *            Create for born-hidden posts and Update for re-unhide. Visible-to-HIDDEN is allowed only for personal root posts.
    Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST", "HIDDEN"

  - `lang` (string,null, required)
    Enum: "BG", "CS", "DA", "DE", "EL", "EN", "ES", "ET", "FI", "FR", "HU", "ID", "IT", "JA", "KO", "LT", "LV", "NB", "NL", "PL", "PT", "RO", "RU", "SK", "SL", "SV", "TR", "UK", "ZH"

  - `poll` (object,null, required)

  - `poll.id` (string, required)
    Internal poll id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `poll.startedAt` (string, required)
    Time when poll starts. Poll is valid from startedAt until expiresAt.
    Example: "2022-03-10T16:15:50Z"

  - `poll.expiresAt` (string,null, required)
    Example: "2022-03-10T16:15:50Z"

  - `poll.multiple` (boolean, required)

  - `poll.votersCount` (integer, required)

  - `poll.options` (array, required)

  - `poll.options.title` (string, required)

  - `poll.options.votesCount` (integer, required)

  - `poll.hideTotals` (boolean, required)

  - `poll.ownVotes` (array,null)

  - `poll.emojis` (array,null)

  - `poll.emojis.shortcode` (string, required)

  - `poll.emojis.category` (string,null, required)

  - `poll.emojis.url` (string, required)

  - `poll.emojis.staticUrl` (string, required)

  - `poll.emojis.visibleInPicker` (boolean, required)

  - `card` (object,null, required)
    Preview card for any links in the post

  - `card.url` (string,null, required)
    URL being referenced

  - `card.title` (string,null, required)
    Title of the linked resource

  - `card.description` (string,null, required)
    Description of the linked resource

  - `card.icon` (string,null, required)
    Favicon URL

  - `card.image` (string,null, required)
    Preview image URL

  - `card.imageAlt` (string,null, required)
    Alt text for the preview image

  - `card.publisher` (object,null, required)
    Information about the website/provider

  - `card.publisher.name` (string,null, required)

  - `card.publisher.url` (string,null, required)

  - `card.publisher.logo` (string,null)

  - `card.publisher.type` (string,null)

  - `card.oembedHtml` (string,null)
    HTML snippet to embed the link (from oEmbed), e.g., an iframe

  - `card.createdAt` (string, required)
    When the card data was fetched/created
    Example: "2022-03-10T16:15:50Z"

  - `card.expiresAt` (string,null, required)
    When the card data should be considered stale
    Example: "2022-03-10T16:15:50Z"

  - `mediaType` (string, required)
    Post media type. Default for Note is text/plain, for Article text/markdown
    Enum: "TEXT_PLAIN", "MARKDOWN"

  - `translations` (object,null, required)

  - `createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `author` (object, required)
    One of account's users.
       Can be multiple per account

  - `author.id` (string, required)
    internal id of this user
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `author.username` (string, required)
    unique user name
    Example: "john_smith"

  - `author.domain` (string, required)
    User's domain
    Example: "wlsly1.net"

  - `author.local` (boolean, required)
    Whether this user is local to this server

  - `author.displayName` (string, required)
    full name of the user
    Example: "John Smith"

  - `author.uri` (string, required)
    URI of this user
    Example: "https://wlsly1.net/users/john_smith"

  - `author.avatar` (object,null)
    User's avatar

  - `author.avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `author.avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `author.avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `author.avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `author.avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `author.avatar.meta` (object)
    Meta data

  - `author.avatar.meta.blurhash` (string,null)

  - `author.avatar.meta.name` (string,null)

  - `author.avatar.meta.altText` (string,null)

  - `author.avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `author.avatar.files` (array, required)
    List of all the files this upload has

  - `author.avatar.files.uri` (string,null, required)
    Full url of the file

  - `author.avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `author.avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `author.avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `author.avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `author.avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `author.avatar.files.meta.width` (integer,null)
    Media width

  - `author.avatar.files.meta.height` (integer,null)
    Media height

  - `author.avatar.files.meta.codec` (string,null)
    Video codec

  - `author.avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `author.avatar.files.size` (integer, required)
    File size in bytes

  - `author.avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `author.avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `author.avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `author.avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `author.avatar.error` (string,null)
    Upload processing error

  - `author.avatar.cached` (boolean)
    true if cached

  - `author.avatar.logs` (string,null)
    Logs

  - `author.avatar.remote` (boolean)
    true if this upload is remote

  - `author.avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `author.avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `author.createdAt` (string, required)
    User's creation time
    Example: "2022-03-10T16:15:50Z"

  - `author.state` (string, required)
    User's moderation state
    Enum: "REGULAR", "SENSITIVE", "LIMITED", "SUSPENDED"

  - `author.relationship` (object,null)
    Relationship with this user

  - `author.relationship.following` (string,null)
    Does the viewer follow the target?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `author.relationship.followed` (string,null)
    Does the target follow the viewer?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `author.relationship.blocked` (boolean,null)
    Viewer blocked the target

  - `author.relationship.blockedBy` (boolean,null)
    Target blocked the viewer

  - `author.relationship.muted` (object,null)
    Viewer mutes the target

  - `author.relationship.muted.state` (boolean, required)

  - `author.relationship.muted.expiresAt` (string,null)
    Example: "2022-03-10T16:15:50Z"

  - `author.relationship.note` (string,null)
    Viewer's private note about the target

  - `author.entityType` (string)
    Entity type: USER, BOT, APPLICATION, GROUP_CHANNEL
    Enum: "USER", "BOT", "APPLICATION", "GROUP_CHANNEL"

  - `author.appMeta` (object)
    Structured metadata (channel flags, channel color, etc.)

  - `author.groupId` (string,null)
    Group ID if this is a group channel or group user.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `author.groupPrivacy` (string,null)
    Privacy of this channel in a group.
    Enum: "PUBLIC", "PRIVATE"

  - `author.groupUserName` (string,null)
    Name of the channel inside a group

  - `author.actorType` (string,null)
    Whether this user is a person, application or a service
    Enum: "Application", "Group", "Organization", "Person", "Service"

  - `author.deleted` (boolean,null)

  - `author.groupAvatar` (object,null)
    Group avatar (only present for group channels)

  - `author.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `author.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `author.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `author.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `author.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `author.groupAvatar.meta` (object)
    Meta data

  - `author.groupAvatar.meta.blurhash` (string,null)

  - `author.groupAvatar.meta.name` (string,null)

  - `author.groupAvatar.meta.altText` (string,null)

  - `author.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `author.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `author.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `author.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `author.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `author.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `author.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `author.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `author.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `author.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `author.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `author.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `author.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `author.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `author.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `author.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `author.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `author.groupAvatar.error` (string,null)
    Upload processing error

  - `author.groupAvatar.cached` (boolean)
    true if cached

  - `author.groupAvatar.logs` (string,null)
    Logs

  - `author.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `author.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `author.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `author.groupName` (string,null)
    Group name (only present for group channels)

  - `author.groupDisplayName` (string,null)
    Group display name (only present for group channels)

  - `author.followApproval` (string, required)
    Follow approval mode: AUTO_APPROVE, MANUALLY_APPROVES, or UNKNOWN
    Enum: "AUTO_APPROVE", "MANUALLY_APPROVES", "UNKNOWN"

  - `author.groupPrimary` (boolean,null)
    true if this is primary group channel.

  - `author.groupAutoSubscribe` (boolean,null)
    true if this is auto-subscribe group channel.

  - `author.channel` (boolean, required)
    Whether this is a channel or a user. Deprecated: use 'entityType' instead.

  - `uploads` (array, required)

  - `uploads.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `uploads.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `uploads.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `uploads.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `uploads.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `uploads.meta` (object)
    Meta data

  - `uploads.meta.blurhash` (string,null)

  - `uploads.meta.name` (string,null)

  - `uploads.meta.altText` (string,null)

  - `uploads.size` (integer, required)
    Size in bytes of all the files in this upload

  - `uploads.files` (array, required)
    List of all the files this upload has

  - `uploads.files.uri` (string,null, required)
    Full url of the file

  - `uploads.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `uploads.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `uploads.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `uploads.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `uploads.files.meta.duration` (number,null)
    Video duration in seconds

  - `uploads.files.meta.width` (integer,null)
    Media width

  - `uploads.files.meta.height` (integer,null)
    Media height

  - `uploads.files.meta.codec` (string,null)
    Video codec

  - `uploads.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `uploads.files.size` (integer, required)
    File size in bytes

  - `uploads.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `uploads.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `uploads.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `uploads.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `uploads.error` (string,null)
    Upload processing error

  - `uploads.cached` (boolean)
    true if cached

  - `uploads.logs` (string,null)
    Logs

  - `uploads.remote` (boolean)
    true if this upload is remote

  - `uploads.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `uploads.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `liked` (boolean,null)
    Whether the current user liked it or not

  - `reposted` (boolean,null)
    Whether the current user reposted it or not

  - `quoted` (boolean,null)
    Whether the current user quoted it or not

  - `muted` (boolean,null)
    Whether the current user muted the author of the post

  - `blocked` (boolean,null)
    Whether the current user blocked the author of the post

  - `visible` (boolean,null)
    Whether the current user can see it or not (e.g. FOLLOWERS_ONLY

  - `pinned` (boolean,null)
    Whether the current user pinned it or not

  - `pinnedAt` (string,null)
    Timestamp when the post was pinned/highlighted (from post_pins)
    Example: "2022-03-10T16:15:50Z"

  - `bookmarked` (boolean,null)
    Whether the current user bookmarked it or not

  - `subscribed` (boolean,null)
    Whether the current user is subscribed to post updates

  - `canManage` (boolean,null)
    Whether the current user can edit/delete this post

  - `edited` (boolean,null)
    Whether the post was edited

  - `deleted` (boolean,null, required)

  - `emojis` (array,null)

  - `emojis.shortcode` (string, required)

  - `emojis.category` (string,null, required)

  - `emojis.url` (string, required)

  - `emojis.staticUrl` (string, required)

  - `emojis.visibleInPicker` (boolean, required)

  - `replies` (array,null)

  - `repostedBy` (array,null)
    List of users who reposted this post

  - `repostedBy.id` (string, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `repostedBy.displayName` (string, required)

  - `repostedBy.username` (string, required)

  - `repostedBy.domain` (string, required)

  - `originalPost` (object,null)
    Original post of repost/quote (the post being reposted or quoted). Related to repostOf field.

  - `parent` (object,null)
    Parent post for comments/replies. Related to replyTo (last element in path).

  - `votes` (object,null)
    Votes summary

  - `votes.upvotes` (integer, required)
    upvotes count

  - `votes.downvotes` (integer, required)
    downvotes count

  - `votes.ownVote` (integer,null)
    current user's vote, if any

  - `publisher` (object,null)
    Publisher context for mixed-scope lists (e.g. search). Contains channel or group branding.

  - `publisher.id` (string, required)
    Publisher id (user id for channels, group id for groups)
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `publisher.type` (string, required)
    Publisher type (USER or GROUP)
    Enum: "USER", "ACCOUNT", "PLATFORM_APP", "APPLICATION", "BOT", "GROUP_CHANNEL", "APP_DATA", "POST", "POLL", "TAG", "TAG_REPORT", "USER_LIST", "NOTIFICATION", "REPORT", "REPORT_COMMENT", "RULE", "QUESTION", "ANSWER", "GROUP", "DRAFT", "UPLOAD", "FILE", "UPLOAD_ACTION", "UPLOAD_JOB", "EXECUTION", "EMPLOYEE_PROFILE", "EMPLOYER_PROFILE", "JOB_POSTING", "JOB_APPLICATION", "MEMBER_LIST", "RBAC_ROLE", "JOIN_REQUEST", "GROUP_INVITE", "EVENT", "AI_PROVIDER", "AI_MODEL", "AI_JOB", "AI_SIGNAL", "AI_SCOPED_PROVIDER", "AI_SCOPED_MODEL", "EMBEDDING_RECALC", "ASYNC_REFRESH", "QUOTE_AUTH", "EMPTY"

  - `publisher.username` (string, required)
    Publisher username (channel username or group name)

  - `publisher.displayName` (string, required)
    Publisher display name

  - `publisher.domain` (string, required)
    Publisher domain

  - `publisher.avatar` (object,null)
    Publisher avatar (channel avatar or group avatar)

  - `publisher.avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `publisher.avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `publisher.avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `publisher.avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `publisher.avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `publisher.avatar.meta` (object)
    Meta data

  - `publisher.avatar.meta.blurhash` (string,null)

  - `publisher.avatar.meta.name` (string,null)

  - `publisher.avatar.meta.altText` (string,null)

  - `publisher.avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `publisher.avatar.files` (array, required)
    List of all the files this upload has

  - `publisher.avatar.files.uri` (string,null, required)
    Full url of the file

  - `publisher.avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `publisher.avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `publisher.avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `publisher.avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `publisher.avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `publisher.avatar.files.meta.width` (integer,null)
    Media width

  - `publisher.avatar.files.meta.height` (integer,null)
    Media height

  - `publisher.avatar.files.meta.codec` (string,null)
    Video codec

  - `publisher.avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `publisher.avatar.files.size` (integer, required)
    File size in bytes

  - `publisher.avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `publisher.avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `publisher.avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `publisher.avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `publisher.avatar.error` (string,null)
    Upload processing error

  - `publisher.avatar.cached` (boolean)
    true if cached

  - `publisher.avatar.logs` (string,null)
    Logs

  - `publisher.avatar.remote` (boolean)
    true if this upload is remote

  - `publisher.avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `publisher.avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `publisher.groupAvatar` (object,null)
    Group avatar (only present for group channels)

  - `publisher.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `publisher.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `publisher.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `publisher.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `publisher.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `publisher.groupAvatar.meta` (object)
    Meta data

  - `publisher.groupAvatar.meta.blurhash` (string,null)

  - `publisher.groupAvatar.meta.name` (string,null)

  - `publisher.groupAvatar.meta.altText` (string,null)

  - `publisher.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `publisher.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `publisher.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `publisher.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `publisher.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `publisher.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `publisher.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `publisher.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `publisher.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `publisher.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `publisher.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `publisher.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `publisher.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `publisher.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `publisher.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `publisher.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `publisher.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `publisher.groupAvatar.error` (string,null)
    Upload processing error

  - `publisher.groupAvatar.cached` (boolean)
    true if cached

  - `publisher.groupAvatar.logs` (string,null)
    Logs

  - `publisher.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `publisher.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `publisher.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `publisher.groupId` (string,null)
    Group id (only present for group channels)
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `publisher.groupName` (string,null)
    Group name (only present for group channels)

  - `publisher.groupDisplayName` (string,null)
    Group display name (only present for group channels)

  - `publisher.groupPrivacy` (string,null)
    Channel privacy within a group (PUBLIC or PRIVATE)
    Enum: "PUBLIC", "PRIVATE"

  - `publisher.groupUserName` (string,null)
    Channel username within a group (only present for group channels)

  - `isHighlightCopy` (boolean,null)
    Whether this is a copy of a highlighted (pinned) reply
                (used to surface deep (2nd+ lvl) highlights under the root post).

  - `quoteApproval` (object,null)
    Quote approval policy info, including viewer's approval status

  - `quoteApproval.policy` (string, required)
    Effective quote policy for this post
    Enum: "PUBLIC", "FOLLOWERS", "NOBODY"

  - `quoteApproval.automatic` (array, required)
    Categories that get automatic approval (e.g. 'public', 'followers')

  - `quoteApproval.manual` (array, required)
    Categories that require manual approval

  - `quoteApproval.currentUser` (string,null)
    Current user's approval status: 'automatic', 'manual', or null

  - `address` (object,null)
    Post location

  - `address.formatted` (string, required)
    Formatted address
    Example: "Adriaen Van Ostadestraat 53, 4703 NT Roosendaal, Netherlands"

  - `address.name` (string,null)
    Name
    Example: "Casa Vacanze"

  - `address.country` (string,null)
    Country
    Example: "USA"

  - `address.countryCode` (string,null)
    Country two letter name
    Example: "us"

  - `address.region` (string,null)
    Region
    Example: "Massachusetts"

  - `address.regionCode` (string,null)
    Region Code
    Example: "MA"

  - `address.subRegion` (string,null)
    Sub-region
    Example: "Newton Heights"

  - `address.locality` (string,null)
    Locality
    Example: "Madrid"

  - `address.street` (string,null)
    Street
    Example: "Adriaen Van Ostadestraat"

  - `address.postalCode` (string,null)
    Address postal code
    Example: "4703 NT"

  - `address.houseNumber` (string,null)
    House number
    Example: "23"

  - `address.longitude` (number,null)
    Longitude
    Example: 4.437564

  - `address.latitude` (number,null)
    Latitude
    Example: 51.534581

  - `address.timeZone` (string,null)
    Time zone name
    Example: "Europe/Amsterdam"

  - `address.plusCode` (string,null)
    Short code
    Example: "9F36GCMQ+R2"

  - `address.serviceId` (string,null)
    Service ID
    Example: "geoapify"

  - `address.placeId` (string,null)
    Service place id

  - `replyTo` (string,null)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `conversationId` (string)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

## Response 401 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation

## Response 403 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation

## Response 404 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation

## Response 500 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation


## Response 400 fields
